package com.doit.day02

import com.doit.day01.Person


object _04_函数的升级 {
  def main(args: Array[String]): Unit = {

    val i: Int = res3.apply(1, 2).apply(3)

    val res4 :Int => Int = res3(1,2)
    //科里华函数
    val res5: Int = res3(1,2)(3)


  }
  val res1 :((Int,String)=>Int,Int,String) => Int = (op:(Int,String)=>Int,a:Int,b:String)=>{
    op(a, b)
  }

  //在公司里面很少有人写一个函数，返回一个函数
  //一种是java的写法 ，一种是语法糖的写法 (参数类型)=> 返回值类型
  val res3 = (a:Int,b:Int)=>{
     (c:Int) => {a+b+c}
  }


  /**
   * 函数里面可以传一个对象吗？
   * 函数的本质是一个接口的实现类对象
   */
/*  val res2 :(Person,Person)=> Person = (p:Person,p1:Person)=>{
    //比较两个person的大小，返回大的那个person  比年龄
    if (p.getAge > p1.getAge){
      p
    }else{
      p1
    }
  }*/

}
